Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Kodowanie znaków
Krisu
post
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Mam plik php, który jest kodowany w systemie UTF-8, nagłówek jaki jest wysyłany to:

  1. <?php
  2. header ('Content-type: text/html; charset=UTF-8');
  3. ?>

i kod html
Cytat
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Php my admin (strona główna):
Cytat
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_unicode_ci

Zaś baza danych w której są zapisywane informacje jest kodowana w systemie latin1_swedish_ci.
Polskie znaki są kodowany w taki sposób
Cytat
śńłąşź

Jeżeli w php my adminie zmienię kodowanie dla pola na inne typu latin2_general_ci, lub utf8_unicode, to nie daje rezultatów.

Co mam zmienić, by polskie znaki były kodowane poprawnie w bazie danych. Nie zależy mi na ich wykorzystywaniu na stronach.
Chodzi tylko o poprawne kodowanie w bazie danych.

Ten post edytował Krisu 25.04.2008, 17:43:24
Go to the top of the page
+Quote Post
_olo_1984
post
Post #2





Grupa: Zarejestrowani
Postów: 289
Pomógł: 77
Dołączył: 5.08.2006

Ostrzeżenie: (0%)
-----


zmień w bazie na utf-8 (podejrzewam że dane będziesz musiał wprowadzić jeszcze raz), pobierz dane i wyświetl na stronie zakodowanej w utf-8. Zobacz rezultat i napisz

Ten post edytował _olo_1984 25.04.2008, 18:17:31
Go to the top of the page
+Quote Post
tomsi
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Miałem podobny przypadek z tym, że przenosiłem dane z jednej bazy danych na drugą. Niestety musiałem wprowadzić dane od nowa (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)
Chyba, że ktoś wie jak to "obejść" to przyda się na przyszłość (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
PawelC
post
Post #4





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Cytat
Chyba, że ktoś wie jak to "obejść" to przyda się na przyszłość (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

przepuścić zrzut bazy sql przez http://www.gzegzolka.com/ (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) I tabele w bazie od samego początku należy kodować w utf-8 wtedy nie będzie takich problemów.

Ten post edytował ExPlOiT 25.04.2008, 18:49:55
Go to the top of the page
+Quote Post
Krisu
post
Post #5





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Czyli tworząc bazę danych z poziomu php mógłbym od razu ustalać typ kodowania danych?
mysql_query('SET NAMES UTF-8');

Pokombinuje jeszcze ale jak nie zadziala to bede pisał (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
PawelC
post
Post #6





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


poprostu ustawiasz kodowanie tabeli na utf-8 i wtedy przy tworzeniu zrzutu bazy niebędzie żadnych problemów z kodowaniem.
Go to the top of the page
+Quote Post
Krisu
post
Post #7





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Ma być samo UTF-8, bez żadnych utf8_unicode_ci, lub utf8_general_ci?

No i czy wystarczy ustawic dla tabeli, czy jeszcze dla pola trzeba to samo zrobić?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




SET NAMES utf8

Dla kolumn utf8_polish_ci, bo przy innych będzie Ci źle wg diakrytyków sortować. ;]
Go to the top of the page
+Quote Post
Krisu
post
Post #9





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


Mimo wszystko nadal błędnie koduje znaki. bo albo zamienia je na (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) lub tak jak wyżej pisałem.

Może spytam tak. Jakie kodowanie obsługuje wszystkie polskie znaki? Jeśli miałbym tą informację, to już wykombinowałbym coś własnoręcznie.
Go to the top of the page
+Quote Post
PawelC
post
Post #10





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Kurde mi normalnie działa utf-8, mam polski znaki. Błąd był popełniony zapewne przy tworzeniu projektu bazy, gdzie kodowanie było inaczej ustawione niż utf-8. Będziesz musiał przepuścić zrzut bazy sql przez jakiś konwerter nic innego nie zrobisz. A robiłeś tak na stronie że odrazu po podłączeniu do bazy ustawiłeś kodowanie na utf-8?
Go to the top of the page
+Quote Post
Krisu
post
Post #11





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


No ok, UTF-8 pięknie działa gdy wprowadzam ręcznie dane do bazy danych, ale gdy dzieje się to ze strony php po przez formularz to już są one źle kodowane. Co w takim wypadku mam zrobić? Od czego to zależy?

Dane wstawiam w ten sposób:
  1. <?php
  2. $insert = "INSERT INTO $tableName (dane1) VALUES ('$value')";
  3.  
  4. $insertresults = mysql_query($insert)
  5. or die (mysql_error());
  6. ?>
Go to the top of the page
+Quote Post
PawelC
post
Post #12





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Jakie masz kodowanie pliku tego gdzie masz formularz? Ja wszystkie pliki koduje w utf-8 i dodawanie tekstów z polskimi znakami działa bardzo dobrze. Pobierz sobie program notepad++, otwórz w nim plik z tym formularzem i ten od dodawania do bazy, w programie wybierz Format/Kodowanie w utf-8 i w sekcji head ustaw kodowanie jako utf-8, zapisz plik i powinno być wszystko ok.

Ten post edytował ExPlOiT 26.04.2008, 10:01:49
Go to the top of the page
+Quote Post
Krisu
post
Post #13





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


korzystam z KED-a u na samym wstępie zawsze zmieniam kodowanie na UTF-8. Plik w ktorym znajduje sie formularz jest wlasnie tak kodowany i plik ktory zajmuje sie danymi w formularzu i jest includowany takze jest w standardzie UTF-8.
Go to the top of the page
+Quote Post
PawelC
post
Post #14





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


a panel phpMyAdmin? Jaki masz w nim kodowanie ustawione?
Go to the top of the page
+Quote Post
Krisu
post
Post #15





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_general_ci
Go to the top of the page
+Quote Post
Sadu2
post
Post #16





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


Ja mam tak:

Metoda porównywania napisów - utf8_general_ci

Każda tabela w bazie:

  1. DEFAULT CHARSET=utf8


Pliki zapisywane w utf-8 (bez sygnatury)

Po połączeniu z bazą:

  1. <?php
  2. mysql_query("SET NAMES 'utf8'");
  3. mysql_query("set character set 'utf8_general_ci'");
  4. ?>


I wszystko działa jak należy.
Go to the top of the page
+Quote Post
Krisu
post
Post #17





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

Ostrzeżenie: (0%)
-----


zrobiłem tak samo, jak podałeś, powyżej i wreszcie problem zniknął. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wielkie dzięki.

Pozdrawiam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 01:37